package simple.number;

/**
 * <a href="https://leetcode.cn/problems/count-the-digits-that-divide-a-number/description/">2520. 统计能整除数字的位数</a>
 * 给你一个整数 num ，返回 num 中能整除 num 的数位的数目。
 * 如果满足 nums % val == 0 ，则认为整数 val 可以整除 nums 。
 * 示例 1：
 *   输入：num = 7
 *   输出：1
 *   解释：7 被自己整除，因此答案是 1 。
 * 示例 2：
 *   输入：num = 121
 *   输出：2
 *   解释：121 可以被 1 整除，但无法被 2 整除。由于 1 出现两次，所以返回 2 。
 * 示例 3：
 *   输入：num = 1248
 *   输出：4
 *   解释：1248 可以被它每一位上的数字整除，因此答案是 4 。
 * 提示：
 *   1 <= num <= 10^9
 *   num 的数位中不含 0
 * @author 刘学松
 * @date 2023-10-26 9:28
 */
public class 统计能整除数字的位数 {
    public int countDigits(int num) {
        int count = 0;
        int[] arr = new int[10];
        arr[1] = 1;
        for (int i = 2; i < 10; i++) {
            if (num % i == 0) {
                arr[i] = 1;
            }
        }
        while (num > 0) {
            count += arr[num % 10];
            num /= 10;
        }
        return count;
    }
}
